import sqlite3
from flask import current_app, g

# 建立数据库连接
def get_db():
    # 建立数据库连接
    if 'db' not in g:
        # print('数据库名:'+current_app.config['DATABASE'])
        # 连接数据库，没有则创建
        g.db = sqlite3.connect(
            current_app.config['DATABASE'],
            detect_types=sqlite3.PARSE_DECLTYPES
        )
        # 读取每行数据
        g.db.row_factory = sqlite3.Row
    # 返回数据库对象
    return g.db

# 关闭数据库连接
def close_db(e=None):
    db = g.pop('db', None)
    # 如果连接存在，关闭连接
    if db is not None:
        db.close()
    print('close db')

# 查询语句，不会提交
def query(sql,args=()):
    db = get_db()
    return db.execute(sql,args)

# 执行数据库语句
def goSQL(sql,args=()) -> sqlite3.Cursor:
    db = get_db()
    cur = db.execute(sql,args)
    db.commit()
    return cur

# 执行数据库脚本，可以多条
def executescript(sql):
    db = get_db()
    cur = db.executescript(sql)
    return cur